﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MinistryStandardPlatformBusiness.MessagePool.Entity;
using MinistryStandardPlatformBusiness.MessagePool.QueueSession;

namespace MinistryStandardPlatformWeb.Controllers.RealTime
{
    public class RealTimeGet
    {

        #region 获取基础数据及心跳
        /// <summary>
        /// 根据SIM卡号list获取在线车辆的实时信息
        /// 使用注意事项:1)由于访问频繁，考虑到效率，没有做入口数据格式判断，请控制好入口数据格式
        /// </summary>
        /// <param name="sims">List<string></param>
        /// <returns>List<LatestGpsInfo>车辆实时数据</returns>
        public static List<LatestGpsInfo> getRealtimeGPSinfoBySim(List<string> sims)
        {
            return WebSessionHander.getRealtimeGPSinfoBySim(sims);
        }
        /// <summary>
        /// 根据用户id获取账号权限内所有车的实时信息
        /// 使用注意事项:1)由于访问频繁，考虑到效率，没有做入口数据格式判断，请控制好入口数据格式
        /// </summary>
        /// <param name="userid">用户登录ID</param>
        /// <returns>List<LatestGpsInfo>车辆实时数据</returns>
        public static List<LatestGpsInfo> getRealtimeGPSinfoByUserid(string userid)
        {
            return WebSessionHander.getRealtimeGPSinfoByUserid(userid);
        }

      
        /// <summary>
        /// 获取访问该节点的所有在线用户情况
        /// </summary>
        /// <returns></returns>
        public static List<OnLineUser> OnlineUserListSessionGet()
        {
            return WebSessionHander.OnlineUserListSessionForWeb();
            //return new List<OnLineUser>()
        }
        /// <summary>
        /// 历史轨迹查询使用
        /// </summary>
        /// <param name="userid">登陆用户名</param>
        /// <param name="sql">轨迹查询语句 where 控制起止时间</param>
        /// <param name="strStartDate">查询开始时间 string 格式：yyyy-MM-dd HH:mm:sss</param>
        /// <param name="strEndDate">查询截止时间 string格式：yyyy-MM-dd HH:mm:sss</param>
        /// <returns>1）有数据：返回正确结果集;2）无数据:"[]";3）错误或异常：返回 "error"</returns>
        public static string getHistoryTrack(string userid, string sql, string strStartDate, string strEndDate)
        {
            return WebSessionHander.getHistoryTrack(userid,sql,strStartDate,strEndDate);
        }
        #endregion

        #region 报表公共通用接口
        /// <summary>
        /// 该存储过程有且只含有一个参数userid，适合根据权限获取数据的接口
        /// </summary>
        /// <param name="userid">登陆用户名</param>
        /// <param name="proName">存储过程名称，该存储过程有且只含有一个参数userid，适合根据权限获取数据的接口</param>
        /// <returns>1）有数据：返回正确结果集;2）无数据:"[]";3）错误或异常：返回 "error"
        /// datatable反序列化后的json,成功返回查询结果，失败返回error</returns>
        public static string getReportDataByProc(string userid, string proName)
        {
            return WebSessionHander.getReportDataByProc(userid, proName);
        }
        /// <summary>
        /// 该存储过程不含参数参数，适合根据权限获取数据的接口
        /// </summary>
        /// <param name="userid">登陆用户名</param>
        /// <param name="proName">存储过程名称，该存储过程不含参数参数，适合根据权限获取数据的接口</param>
        /// <returns>1）有数据：返回正确结果集;2）无数据:"[]";3）错误或异常：返回 "error"
        /// datatable反序列化后的json,成功返回查询结果，失败返回error</returns>
        public static string getReportDataByProcNoPara(string userid, string proName)
        {
            return WebSessionHander.getReportDataByProcNoPara(userid, proName);
        }
        /// <summary>
        /// 适合sql语句查询
        /// </summary>
        /// <param name="userid">登陆用户名</param>
        /// <param name="sql">查询的sql语句</param>
        /// <returns>1）有数据：返回正确结果集;2）无数据:"[]";3）错误或异常：返回 "error"
        /// datatable反序列化后的json,成功返回查询结果，失败返回error</returns>
        public static string getReportDataBySql(string userid, string sql)
        {
            return WebSessionHander.getReportDataBySql(userid,sql);
        }
        #endregion

        #region 复杂报表统计接口

        /// <summary>
        ///  读取来至MinistryStandardPlatformGps分库的数据处理 根据sql
        /// </summary>
        /// <param name="userid">登陆用户名</param>
        /// <param name="sql">查询语句 where 控制起止时间</param>
        /// <param name="strStartDate">查询开始时间 string 格式：yyyy-MM-dd HH:mm:sss</param>
        /// <param name="strEndDate">查询截止时间 string格式：yyyy-MM-dd HH:mm:sss</param>
        /// <param name="isGeo">是否需要地址解析，0:代表不需要，1：代表需要</param>
        /// <returns>1）有数据：返回正确结果集;2）无数据:"[]";3）错误或异常：返回 "error"</returns>
        public static string getReportFromGeoBase(string userid, string sql, string strStartDate, string strEndDate, string isGeo = "0")
        {
            return WebSessionHander.getReportFromGeoBase(userid,sql,strStartDate,strEndDate,isGeo);
        }
        /// <summary>
        ///   读取来至MinistryStandardPlatformGps分库的数据处理 根据sim
        /// </summary>
        /// <param name="userid">登陆用户名</param>
        /// <param name="strStartDate">查询开始时间 string 格式：yyyy-MM-dd HH:mm:sss</param>
        /// <param name="strEndDate">查询截止时间 string格式：yyyy-MM-dd HH:mm:sss</param>
        /// <param name="sim">sim卡号</param>
        /// <returns>1）有数据：返回正确结果集;2）无数据:"[]";3）错误或异常：返回 "error"</returns>
        public static string getReportFromGeoBase(string userid,  string strStartDate, string strEndDate, string sim)
        {
            return WebSessionHander.getReportFromGeoBase(userid, strStartDate, strEndDate, sim);
        }
        /// <summary>
        /// 查询某月份的数据库是否存在
        /// </summary>
        /// <param name="dateTime">string 格式：yyyy-MM-dd HH:mm:sss</param>
        /// <returns>返回 1：表示该月份的分库存在  0：表示该月份的分库不存在</returns>
        public static string getCheckDbExitsOrNot(string dateTime)
        {
            return WebSessionHander.getCheckDbExitsOrNot(dateTime);
        }
        #endregion

    }
}